package org.xlp.auto.create;

import org.xlp.utils.XLPStringUtil;

import java.io.File;

/**
 * Description: 字符操作工具类
 * <br/>date: 2023/11/30 14:42
 *
 * @version 1.0
 * @author: xlp
 */
class StringUtils {
    /**
     * "org.xlp" -> "org/xlp"
     *
     * @param name 要转换的字符串
     * @return 假如参数为null，则返回null，否则返回转换后的字符串
     */
    public static String dotToSplash(String name) {
        if (!XLPStringUtil.isEmpty(name)) {
            return name.replace(".", File.separator);
        }
        return null;
    }

    /**
     * "org/xlp" -> "org.xlp"
     *
     * @param name 要转换的字符串
     * @return 假如参数为null，则返回null，否则返回转换后的字符串
     */
    public static String splashToDot(String name) {
        if (!XLPStringUtil.isEmpty(name)) {
            return name.replace(File.separator, ".");
        }
        return null;
    }

    /**
     * 根据java文件自动创建对象，获取完整包名（不包含类名称）
     * @param autoCreator
     * @return
     */
    public static String getFullPackageName(AbstractAutoCreator autoCreator){
        String packageName = null;
        if (autoCreator != null){
            String rootPackageName = XLPStringUtil.emptyTrim(autoCreator.getRootPackageName());
            String subPkg = XLPStringUtil.emptyTrim(autoCreator.getSubPackageName());
            packageName = rootPackageName;
            if (!XLPStringUtil.isEmpty(subPkg) && !XLPStringUtil.isEmpty(rootPackageName)){
                packageName += ".";
            }
            packageName += subPkg;
        }
        return packageName;
    }

    /**
     * 首字符转换成小写
     * @param str
     * @return
     */
    public static String firstCharToLowerCase(String str){
        if (XLPStringUtil.isEmpty(str)) return str;
        str = str.trim();
        str = Character.toLowerCase(str.charAt(0)) + str.substring(1);
        return str;
    }
}
